# Contributor: Rasmus Thomsen <oss@cogitri.dev>
# Contributor: Valery Kartel <valery.kartel@gmail.com>
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Rasmus Thomsen <oss@cogitri.dev>
pkgname=glib
pkgver=2.64.4
pkgrel=0
pkgdesc="Common C routines used by Gtk+ and other libs"
url="https://developer.gnome.org/glib/"
arch="all"
license="LGPL-2.1-or-later"
triggers="$pkgname.trigger=/usr/share/glib-2.0/schemas:/usr/lib/gio/modules"
depends_dev="python3 gettext-dev bzip2-dev libxml2-utils libxslt
	docbook-xml docbook-xsl"
makedepends="$depends_dev pcre-dev meson zlib-dev libffi-dev util-linux-dev"
options="!check" # don't like to be run without first being installed
source="https://download.gnome.org/sources/glib/${pkgver%.*}/glib-$pkgver.tar.xz
	0001-gquark-fix-initialization-with-c-constructors.patch
	deprecated-no-warn.patch
	musl-libintl.patch
	mips-disable-memory-barrier.patch
	mips-disable-some-gio-test-resources.patch
	"
subpackages="$pkgname-dbg $pkgname-doc $pkgname-static $pkgname-dev $pkgname-lang"

# secfixes:
#   2.62.5-r0:
#     - CVE-2020-6750
#   2.60.4-r0:
#     - CVE-2019-12450

build() {
	meson \
		--default-library=both \
		--prefix=/usr \
		--sysconfdir=/etc \
		--mandir=/usr/share/man \
		--localstatedir=/var \
		--buildtype=plain \
		-Dman=true \
		. output
	ninja -C output

	# FIXME: meson adds -lintl first in Libs: in the .pc file but it needs to be
	#        last for static builds (e.g. qemu)
	sed -i -e '/^Libs:/s/-lintl \(.*\)/\1 -lintl/' output/meson-private/glib-2.0.pc
}

package() {
	DESTDIR="$pkgdir" ninja -C output install
}

dev() {
	default_dev
	mkdir -p "$subpkgdir"/usr/bin "$subpkgdir"/usr/share
		find "$pkgdir"/usr/bin ! -name "glib-compile-schemas" -a \( \
		-name "gdbus-codegen" -o \
		-name "gobject-query" -o \
		-name "gresource" -o \
		-name "gtester*" -o \
		-name "glib-*" \) \
		-exec mv {} "$subpkgdir"/usr/bin \;
	mv "$pkgdir"/usr/share/gdb "$pkgdir"/usr/share/glib-2.0 \
		"$subpkgdir"/usr/share
}

static() {
	pkgdesc="glib static libraries"
	depends="gettext-static"
	mkdir -p "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/*.a "$subpkgdir"/usr/lib/
}

sha512sums="f21fe33068a5cabdbfef54ef635b3f810b389416c3b4b66ae4975e84841834f7b7640d2518d52cb7341641af5761919eebd5e7b25bd2946f3bdd002c4902b090  glib-2.64.4.tar.xz
32e5aca9a315fb985fafa0b4355e4498c1f877fc1f0b58ad4ac261fb9fbced9f026c7756a5f2af7d61ce756b55c8cd02811bb08df397040e93510056f073756b  0001-gquark-fix-initialization-with-c-constructors.patch
744239ea2afb47e15d5d0214c37d7c798edac53797ca3ac14d515aee4cc3999ef9716ba744c64c40198fb259edc922559f77c9051104a568fc8ee4fc790810b1  deprecated-no-warn.patch
6ec43e76bb973367bd99c5e2077113e86df2b120b3788aeeb4692a572392bba7227e8217b28a918e02ad82fcb8ca6d260c3221b84688774d86779755af51a847  musl-libintl.patch
f853ddb4ff8231e1df15323773af938323517b643b241fc635d05f7d6e103ff18417d203c65661c7dd0b5e44c5d74c71a497e82281c2bb4ed4e2fe9b9ed7140f  mips-disable-memory-barrier.patch
755c468622e1923967d52de4878d641ec7d31bd0f83b0756d61cb668220213d6db1a751826f4f1fb611e998b653afc1e367fe0fe475063737c9786f84ee91538  mips-disable-some-gio-test-resources.patch"
